home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
gnu
/
nethack.lha
/
nethack-3.1
/
include
/
config.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-01-23
|
13KB
|
422 lines
/* SCCS Id: @(#)config.h 3.1 92/08/29 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#ifndef CONFIG_H /* make sure the compiler does not see the typedefs twice */
#define CONFIG_H
/*
* Section 1: OS selection.
* Select the version of the OS you are using.
* For "UNIX" select either SYSV or BSD in unixconf.h.
* A "VMS" option is not needed since the VMS C-compilers
* provide it (no need to change sec#1, vmsconf.h handles it).
*/
#define UNIX /* delete if no fork(), exec() available */
/*
* MS DOS - compilers
*
* Microsoft C auto-defines MSDOS,
* Borland C auto-defines __TURBOC__,
* DJGPP auto-defines MSDOS.
*/
/* #define MSDOS /* use if not defined by compiler or cases below */
#ifdef __TURBOC__
# define MSDOS
#endif
#ifdef MSDOS
# undef UNIX
#endif
/*
* Mac Stuff.
*/
#ifdef applec /* MPW auto-defined symbol */
# define MAC
# undef UNIX /* Just in case */
#endif
/* #define MAC /* We're on some mac-ish platform */
#ifdef MAC
# ifdef THINK_C
# define NEED_VARARGS
# endif
#endif
/*
* Amiga setup.
*/
#ifdef AZTEC_C /* Manx auto-defines this */
# ifdef MCH_AMIGA /* Manx auto-defines this for AMIGA */
# ifndef AMIGA
#define AMIGA /* define for Commodore-Amiga */
# endif /* (Lattice auto-defines AMIGA) */
#define AZTEC_50 /* define for version 5.0 of manx */
# endif
#endif
#ifdef LATTICE
# define NEARDATA __near /* put some data close */
# define NO_SCAN_BRACK /* scanf doesn't handle [] (this define available
* for any system with this problem) */
#else
# define NEARDATA
#endif
#ifdef AMIGA
# ifdef UNIX
"Please re-read the compilation documentation. Thank you."
# endif
#endif
/*
* Atari auto-detection
*/
#ifdef atarist
# undef UNIX
# define TOS
#else
# ifdef __MINT__
# undef UNIX
# define TOS
# endif
#endif
/*
* and other systems...
*/
/* #define OS2 /* define for OS/2 */
/* #define TOS /* define for Atari ST/TT */
/* #define STUPID /* avoid some complicated expressions if
your C compiler chokes on them */
/* #define TERMINFO /* uses terminfo rather than termcap */
/* should be defined for HPUX and most, but not all,
SYSV */
/* in particular, it should NOT be defined for the
* UNIXPC unless you remove the use of the shared
* library in the makefile */
/* #define MINIMAL_TERM /* if a terminal handles highlighting or tabs poorly,
try this define, used in pager.c and termcap.c */
/* #define ULTRIX_CC20 /* define only if using cc v2.0 on a DECstation */
/* #define ULTRIX_PROTO /* define for Ultrix 4.0 (or higher) on a DECstation;
* if you get compiler errors, don't define this. */
/* Hint: if you're not developing code, don't define
ULTRIX_PROTO. */
#ifdef AMIGA
# define NEED_VARARGS
#endif
#ifdef VMS /* really old compilers need special handling, detected here */
# undef UNIX
# ifdef __DECC /* buggy early versions want widened prototypes */
# define NOTSTDC /* except when typedefs are involved */
# define USE_VARARGS
# undef __HIDE_FORBIDDEN_NAMES /* need non-ANSI library support functions */
# else
# ifdef VAXC /* must use CC/DEFINE=ANCIENT_VAXC for vaxc v2.2 or older */
# ifdef ANCIENT_VAXC /* vaxc v2.2 and earlier [lots of warnings to come] */
# define KR1ED /* simulate defined() */
# define USE_VARARGS
# else /* vaxc v2.3,2.4,or 3.x, or decc in vaxc mode */
# if defined(USE_PROTOTYPES) /* this breaks 2.2 (*forces* use of ANCIENT)*/
# define __STDC__ 0 /* vaxc is not yet ANSI compliant, but close enough */
# define signed /* well, almost close enough */
#include <stddef.h>
# define UNWIDENED_PROTOTYPES
# endif
# define USE_STDARG
# endif
# endif /*VAXC*/
# endif /*__DECC*/
# ifdef VERYOLD_VMS /* v4.5 or earlier; no longer available for testing */
# define USE_OLDARGS /* <varargs.h> is there, vprintf & vsprintf aren't */
# ifdef USE_VARARGS
# undef USE_VARARGS
# endif
# ifdef USE_STDARG
# undef USE_STDARG
# endif
# endif
#endif /*VMS*/
#ifdef vax
/* just in case someone thinks a DECstation is a vax. It's not, it's a mips */
# ifdef ULTRIX_PROTO
# undef ULTRIX_PROTO
# endif
# ifdef ULTRIX_CC20
# undef ULTRIX_CC20
# endif
#endif
#ifdef KR1ED /* For compilers which cannot handle defined() */
#define defined(x) (-x-1 != -1)
/* Because:
* #define FOO => FOO={} => defined( ) => (-1 != - - 1) => 1
* #define FOO 1 or on command-line -DFOO
* => defined(1) => (-1 != - 1 - 1) => 1
* if FOO isn't defined, FOO=0. But some compilers default to 0 instead of 1
* for -DFOO, oh well.
* => defined(0) => (-1 != - 0 - 1) => 0
*
* But:
* defined("") => (-1 != - "" - 1)
* [which is an unavoidable catastrophe.]
*/
#endif
/* Windowing systems...
* Define all of those you want supported in your binary.
* Some combinations make no sense. See the installation document.
*/
#define TTY_GRAPHICS /* good old tty based graphics */
/* #define X11_GRAPHICS /* X11 interface */
/*
* Define the default window system. This should be one that is compiled
* into your system (see defines above). Known window systems are:
*
* tty, X11, mac, amii
*/
/* MAC also means MAC windows */
#ifdef MAC
# ifndef AUX
# undef TTY_GRAPHICS
# undef X11_GRAPHICS
# define DEFAULT_WINDOW_SYS "mac"
# endif
#endif
/* no options yet: Amiga also means Intuition windows */
#ifdef AMIGA
# undef TTY_GRAPHICS
# define DEFAULT_WINDOW_SYS "amii"
#endif
#ifndef DEFAULT_WINDOW_SYS
# define DEFAULT_WINDOW_SYS "tty"
#endif
/*
* Section 2: Some global parameters and filenames.
* Commenting out WIZARD, LOGFILE, or NEWS removes that feature
* from the game; otherwise set the appropriate wizard name.
* LOGFILE and NEWS refer to files in the playground.
*/
#ifndef WIZARD /* allow for compile-time or Makefile changes */
# ifndef KR1ED
# define WIZARD "wizard" /* the person allowed to use the -D option */
# else
# define WIZARD
# define WIZARD_NAME "wizard"
# endif
#endif
#define LOGFILE "logfile" /* larger file for debugging purposes */
#define NEWS "news" /* the file containing the latest hack news */
/*
* If COMPRESS is defined, it should contain the full path name of your
* 'compress' program. Defining INTERNAL_COMP causes NetHack to do
* simpler byte-stream compression internally. Both COMPRESS and
* INTERNAL_COMP create smaller bones/level/save files, but require
* additional code and time. Currently, only UNIX fully implements
* COMPRESS; other ports should be able to uncompress save files a
* la unixmain.c if so inclined.
*/
#ifdef UNIX
# define COMPRESS "/usr/ucb/compress" /* path name for 'compress' */
#endif
#ifndef COMPRESS
# define INTERNAL_COMP /* control use of NetHack's compression routines */
#endif
/*
* Defining INSURANCE slows down level changes, but allows games that
* died due to program or system crashes to be resumed from the point
* of the last level change, after running a utility program.
*/
#define INSURANCE /* allow crashed game recovery */
#ifndef MAC
# define CHDIR /* delete if no chdir() available */
#endif
#ifdef CHDIR
/*
* If you define HACKDIR, then this will be the default playground;
* otherwise it will be the current directory.
*/
#define HACKDIR "/usr/games/lib/nethackdir" /* nethack directory */
/*
* Some system administrators are stupid enough to make Hack suid root
* or suid daemon, where daemon has other powers besides that of reading or
* writing Hack files. In such cases one should be careful with chdir's
* since the user might create files in a directory of his choice.
* Of course SECURE is meaningful only if HACKDIR is defined.
*/
/* #define SECURE /* do setuid(getuid()) after chdir() */
/*
* If it is desirable to limit the number of people that can play Hack
* simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS.
* #define MAX_NR_OF_PLAYERS 6
*/
#endif /* CHDIR */
/*
* Section 3: Definitions that may vary with system type.
* For example, both schar and uchar should be short ints on
* the AT&T 3B2/3B5/etc. family.
*/
/*
* Uncomment the following line if your compiler doesn't understand the
* 'void' type (and thus would give all sorts of compile errors without
* this definition).
*/
/* #define NOVOID /* define if no "void" data type. */
/*
* Uncomment the following line if your compiler falsely claims to be
* a standard C compiler (i.e., defines __STDC__ without cause).
* Examples are Apollo's cc (in some versions) and possibly SCO UNIX's rcc.
*/
/* #define NOTSTDC /* define for lying compilers */
#include "tradstdc.h"
/*
* type schar: small signed integers (8 bits suffice) (eg. TOS)
*
* typedef char schar;
*
* will do when you have signed characters; otherwise use
*
* typedef short int schar;
*/
#ifdef AZTEC
# define schar char
#else
typedef signed char schar;
#endif
/*
* type uchar: small unsigned integers (8 bits suffice - but 7 bits do not)
*
* typedef unsigned char uchar;
*
* will be satisfactory if you have an "unsigned char" type;
* otherwise use
*
* typedef unsigned short int uchar;
*/
typedef unsigned char uchar;
/*
* Various structures have the option of using bitfields to save space.
* If your C compiler handles bitfields well (e.g., it can initialize structs
* containing bitfields), you can define BITFIELDS. Otherwise, the game will
* allocate a separate character for each bitfield. (The bitfields used never
* have more than 7 bits, and most are only 1 bit.)
*/
#define BITFIELDS /* Good bitfield handling */
/* #define STRNCMPI /* compiler/library has the strncmpi function */
/*
* There are various choices for the NetHack vision system. There is a
* choice of two algorithms with the same behavior. Defining VISION_TABLES
* creates huge (60K) tables at compile time, drastically increasing data
* size, but runs slightly faster than the alternate algorithm. (MSDOS in
* particular cannot tolerate the increase in data size; other systems can
* flip a coin weighted to local conditions.)
*
* If VISION_TABLES is defined, two-dimensional tables will be generated.
* Some compilers need braces around the rows of such arrays; some need
* them not to be there. Known preferences:
* Braces: Sun, DEC vaxen (Ultrix), DEC Mips
* Bull DPX/2 K&R (Green Hills)
* No Braces: gcc, hc (IBM High C compiler), AT&T 3B, MSC 5.1
* Bull DPX/2 Ansi (Green Hills/-Xa option), MPW C
* If VISION_TABLES is not defined, things will be faster if you can use
* MACRO_CPATH. Some cpps, however, cannot deal with the size of the
* functions that have been macroized.
*/
/*#define VISION_TABLES /* use vision tables generated at compile time */
#ifdef VISION_TABLES
# define BRACES /* put braces around rows of 2d arrays */
#else
# define MACRO_CPATH /* use clear_path macros instead of functions */
#endif
/*
* Section 4: THE FUN STUFF!!!
*
* Conditional compilation of special options are controlled here.
* If you define the following flags, you will add not only to the
* complexity of the game but also to the size of the load module.
*
* Note: Commenting MULDGN will yield a game similar to 3.0, without
* Quest dungeons and tasks, and without some other special dungeons.
*/
/* game features */
#define POLYSELF /* Polymorph self code by Ken Arromdee */
#define SOUNDS /* Add more life to the dungeon */
/* dungeon features */
#define SINKS /* Kitchen sinks - Janet Walz */
/* dungeon levels */
#define WALLIFIED_MAZE /* Fancy mazes - Jean-Christophe Collet */
#define REINCARNATION /* Special Rogue-like levels */
/* monsters & objects */
#define KOPS /* Keystone Kops by Scott R. Turner */
#define ARMY /* Soldiers, barracks by Steve Creps */
#define SEDUCE /* Succubi/incubi seduction, by KAA, suggested by IM */
#define WALKIES /* Leash code by M. Stephenson */
#define TOURIST /* Tourist players with cameras and Hawaiian shirts */
#define TUTTI_FRUTTI /* fruit option as in Rogue, but which works, by KAA */
#define MUSE /* Let monsters use more things - KAA */
#define MULDGN /* Multi-branch dungeons MRS & IM */
/* difficulty */
#define ELBERETH /* Engraving the E-word repels monsters */
#define EXPLORE_MODE /* Allow non-scoring play with additional powers */
/* I/O */
#define REDO /* support for redoing last command - DGK */
#define COM_COMPL /* Command line completion by John S. Bien */
#ifndef AMIGA
# define CLIPPING /* allow smaller screens -- ERS */
#endif
#ifdef REDO
# define DOAGAIN '\001' /* ^A, the "redo" key used in cmd.c and getline.c */
#endif
#define EXP_ON_BOTL /* Show experience on bottom line */
/* #define SCORE_ON_BOTL /* added by Gary Erickson (erickson@ucivax) */
#include "global.h" /* Define everything else according to choices above */
#endif /* CONFIG_H */